package model

import (
	"time"
	"gorm.io/gorm"
)

// Role 角色模型
type Role struct {
	ID          uint           `gorm:"primarykey" json:"id"`
	Name        string         `gorm:"size:50;not null;unique" json:"name"`
	Code        string         `gorm:"size:50;not null;unique" json:"code"`
	Description string         `gorm:"size:200" json:"description"`
	Status      int           `gorm:"default:1" json:"status"` // 1:正常 0:禁用
	CreatedAt   time.Time      `json:"created_at"`
	UpdatedAt   time.Time      `json:"updated_at"`
	DeletedAt   gorm.DeletedAt `gorm:"index" json:"-"`
	Permissions []Permission   `gorm:"many2many:role_permissions;" json:"permissions"`
}

// Permission 权限模型
type Permission struct {
	ID          uint           `gorm:"primarykey" json:"id"`
	Name        string         `gorm:"size:50;not null" json:"name"`
	Code        string         `gorm:"size:50;not null;unique" json:"code"`
	Type        string         `gorm:"size:20;not null" json:"type"` // menu:菜单 button:按钮
	ParentID    uint           `json:"parent_id"`
	Path        string         `gorm:"size:200" json:"path"`
	Component   string         `gorm:"size:200" json:"component"`
	Icon        string         `gorm:"size:50" json:"icon"`
	Sort        int           `gorm:"default:0" json:"sort"`
	Status      int           `gorm:"default:1" json:"status"` // 1:正常 0:禁用
	CreatedAt   time.Time      `json:"created_at"`
	UpdatedAt   time.Time      `json:"updated_at"`
	DeletedAt   gorm.DeletedAt `gorm:"index" json:"-"`
} 